#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;


const int N=128;

int n,m,ans;
int nv[N][N],Some[N][N],None[N][N];

inline void dfs(int st,int sc,int nc) {
    if(!sc) {ans+=(!nc); return;}
    if(ans>1000) return;
    int u=Some[st][1];
    for(int e=1;e<=sc;++e) {
        int v=Some[st][e];
        if(nv[u][v]) continue;
        int nsc=0,nnc=0;
        for(int i=1;i<e;i++) if(nv[u][Some[st][i]] && nv[v][Some[st][i]]) Some[st+1][++nsc]=Some[st][i];
        for(int i=e+1;i<=sc;i++) if(nv[v][Some[st][i]]) Some[st+1][++nsc]=Some[st][i];
        for(int i=1;i<=nc;i++) if(nv[v][None[st][i]]) None[st+1][++nnc]=None[st][i];
        dfs(st+1,nsc,nnc);
        None[st][++nc]=v;
    }
}
void init()
{
    memset(nv,0,sizeof nv);
    memset(None,0,sizeof None);
    for(int i=0;i<n;i++) Some[0][i+1]=i;
    ans=0;
}
int main() {
    while(scanf("%d%d",&n,&m)!=EOF) {
        init();
        for(int i=0;i<m;i++) {
            int x,y;
            scanf("%d%d",&x,&y);
            if(x==y)continue;
            nv[x-1][y-1]=1;
            nv[y-1][x-1]=1;
        }
        dfs(0,n,0);
        if(ans>1000) printf("Too many maximal sets of friends.\n");
        else printf("%d\n",ans);
    }
}
